'use strict'

const { validate } = use('Validator')
const log = use('Logger')
const moment = require('moment') //日期格式化插件
moment.locale('zh-cn') //设为北京时区
const Util = require('../../../Lib/Util')
//引用Service里的类并初始化
const markService = new (require(`../../../Services/MarkService`))()

class MarkController {
  //---------------------------------------------
  //async 方法名(ctx)，固定格式，其中ctx是一个对象，表示请求的上下文，ctx = { request, response, session }
  //每个Controller的方法return时，都需通过return Util.end2front()，使得返回的对象的格式具有一致性
  //---------------------------------------------

  /**
   * 返回一个包含hello world文本的对象
   * @returns object
   */
  async mark1(ctx) {
    let requestAll = ctx.request.all()

    let body = {
      keyWord: requestAll.keyword,
    }

    ctx.body = body

    //调用service层来处理业务逻辑
    const result = await markService.mark1(ctx)
    //返回结果给前端
    return Util.end2front({
      msg: result.msg,
    })
  }

  async mark2(ctx) {
    try {
      //获取前端get和post方式传递过来的所有参数
      let requestAll = ctx.request.all()

      let body = {
        id: requestAll.id,
      }
      //约定：把组装后的对象传给ctx.body，供service层调用
      ctx.body = body

      //调用service层来处理业务逻辑
      const result = await markService.mark2(ctx)
      if (result.error) {
        throw new Error(result.msg)
      }
      //组装获取到的数据。比如service获取到了10个字段，但前端只需用到4个，就在这里进行组装
      let data = []
      for (let item of result.data) {
        data.push({ user_name: item.userName, pwd: item.pwd })
      }
      //返回结果给前端
      return Util.end2front({
        msg: '查询完成',
        data: data,
      })
    } catch (err) {
      return Util.error2front({
        //isShowMsg: true,
        msg: err.message,
        code: 9000,
        track: '023j0f93j89',
      })
    }
  }

  /**
   * 从数据库中获取数据
   * @returns object
   */
  // async test3(ctx) {
  //   try {
  //     //获取前端get和post方式传递过来的所有参数
  //     let requestAll = ctx.request.all()

  //     //对前端请求参数进行组装
  //     let body = {
  //       filter: {
  //         //要过滤的条件
  //         fromDate: moment(requestAll.fromDate).format('YYYY-MM-DD'),
  //         toDate: moment(requestAll.toDate).format('YYYY-MM-DD'),
  //         status: requestAll.status,
  //         keyword: requestAll.keyword,
  //         page: requestAll.page,
  //         limit: requestAll.limit,
  //       },
  //     }
  //     //约定：把组装后的请求参数赋值给ctx.body，供service层调用
  //     ctx.body = body
  //     //调用service层来处理业务逻辑
  //     const result = await testService.test3(ctx)
  //     if (result.error) {
  //       throw new Error(result.msg)
  //     }
  //     //组装获取到的数据。比如service获取到了10个字段，但前端只需用到4个，就在这里进行组装
  //     let data = []
  //     for (let item of result.data) {
  //       data.push({ userName: item.userName, ctime: moment(item.ctime).format('YYYY-MM-DD'), authName: item.authName })
  //     }
  //     //返回结果给前端
  //     return Util.end2front({
  //       msg: '查询完成',
  //       data: data,
  //     })
  //   } catch (err) {
  //     return Util.error2front({
  //       //isShowMsg: true,
  //       msg: err.message,
  //       code: 9000,
  //       track: 'kljsdf09j2903j',
  //     })
  //   }
  // }
}

module.exports = MarkController
